#include "sth20.h"


sth20_value value;

void drv_sth20_init()
{
	drv_IIC_init();
	
	
}
uint16_t drv_sth20_tem_read()
{
	uint8_t date[2];
	uint16_t receive_date=0;
	drv_IIC_start();//起始信号
	drv_ICC_senddate(0x80);//发送地址
	if(drv_IIC_waitACK()!=ACK)
		{
			drv_IIC_stop();//终止信号
			return NOACK;
		}
		drv_ICC_senddate(0xE3);//发送数据
		if(drv_IIC_waitACK()!=ACK)
		{
			drv_IIC_stop();//终止信号
			return NOACK;
		}
	drv_IIC_start();//起始信号
	drv_ICC_senddate(0x81);//发送数据
	if(drv_IIC_waitACK()!=ACK)
		{
			drv_IIC_stop();//终止信号
			return NOACK;
		}
	delay_ms(85);
	date[0]=drv_IIC_readdate(ACK);
	date[1]=drv_IIC_readdate(NOACK);
		drv_IIC_stop();//终止信号
	receive_date=((date[0]<<8)|date[1]);
	return receive_date;
}
uint16_t drv_sth20_read_rh()
{
	uint8_t date[2];
	uint16_t receive_date=0;
	drv_IIC_start();//起始信号
	drv_ICC_senddate(0x80);//发送地址
	if(drv_IIC_waitACK()!=ACK)//等待应答信号
		{
			drv_IIC_stop();//终止信号
			return NOACK;
		}
		drv_ICC_senddate(0xE5);//发送数据
		if(drv_IIC_waitACK()!=ACK)
		{
			drv_IIC_stop();//终止信号
			return NOACK;
		}
	drv_IIC_start();//起始信号
	drv_ICC_senddate(0x81);//发送数据
		if(drv_IIC_waitACK()!=ACK)
		{
			drv_IIC_stop();//终止信号
			return NOACK;
		}
	delay_ms(29);
	date[0]=drv_IIC_readdate(ACK);//读数据并发送应答信号
	date[1]=drv_IIC_readdate(NOACK);
	drv_IIC_stop();//终止信号
	receive_date=((date[0]<<8)|date[1]);
	return receive_date;
}
void drv_sth20_getdate(void)
{
	uint16_t receive;//温度
	uint16_t receive_1;//湿度
	receive=drv_sth20_tem_read();
	receive_1=drv_sth20_read_rh();
	value.tem=-46.85+175.72*((float)receive/65536);
	value.rh=-6 +125 *(float)receive_1/65536;
	printf("tempeture=%.2f\r\n",value.tem);
	printf("Humidity=%.2f\r\n",value.rh);
}
//#include "sth20.h"


//sht20_val tem_hum_data;

//void Init_sht20(void)
//{
//    drv_IIC_init();
//    
//}

//uint16_t sht20_temdata(void)
//{
//    uint8_t data[2];
//    uint16_t ret = 0;
//    drv_IIC_start();
//    drv_ICC_senddate(0x80);
//    if(drv_IIC_waitACK()!=ACK)
//    {
//        drv_IIC_stop();
//        return NOACK;
//    } 
//    drv_ICC_senddate(0xE3);
//    if(drv_IIC_waitACK()!=ACK)
//    {
//       drv_IIC_stop();
//        return NOACK;
//    } 
//    drv_IIC_start();
//   drv_ICC_senddate(0x81);
//    if(drv_IIC_waitACK()!=ACK)
//    {
//        drv_IIC_stop();
//        return NOACK;
//    } 
//    delay_ms(85);
//    data[0] =drv_IIC_readdate(ACK);
//    data[1] =drv_IIC_readdate(NOACK);
//    drv_IIC_stop();
//    ret = (data[0]<<8)|data[1];
//    return ret;
//        

//}


//uint16_t sht20_humdata(void)
//{
//    uint8_t data[2];
//    uint16_t ret = 0;
//    iic_start();
//    iic_senddata(0x80);
//    if(iic_waitACK() !=ACK)
//    {
//        iic_stop();
//        return NOACK;
//    } 
//    iic_senddata(0xE5);
//    if(iic_waitACK() !=ACK)
//    {
//        iic_stop();
//        return NOACK;
//    } 
//    iic_start();
//    iic_senddata(0x81);
//    if(iic_waitACK() !=ACK)
//    {
//        iic_stop();
//        return NOACK;
//    } 
//    systick_ms(29);
//    data[0] = iic_readdata(ACK);
//    data[1] = iic_readdata(NOACK);
//    iic_stop();
//    ret = (data[0]<<8)|data[1];
//    return ret;
//        

//}



//void sht20_getdata(void)
//{
//    uint16_t tem_temp = 0;
////    uint16_t hum_temp = 0;
//    tem_temp = sht20_temdata();
////    hum_temp = sht20_humdata();
//    tem_hum_data.tem = -46.85 +175.72*(float)tem_temp/65536;
////    tem_hum_data.hum = -6 +125 *(float)hum_temp/65536;
//    printf("Temperature=%.2f\r\n",tem_hum_data.tem);
////    printf("Humidity=%.2f\r\n",tem_hum_data.hum);


//}
